package com.sample.user.service;

import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;

import com.sample.user.entity.User;
import com.swak.annotation.Tcc;

/**
 * 用户服务
 * 
 * @author lifeng
 * @date 2020年7月30日 下午3:18:25
 */
@Service
@DubboService(group = "sj")
public class UserServiceImpl implements UserService {

	@Override
	public User get(Long id) {
		System.out.println("服务调用  （等待10s）-- 开始");
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("服务调用 -- 结束");
		User user = new User();
		user.setName("lifeng:" + id);
		return user;
	}

	/**
	 * 分布式事务
	 */
	@Tcc(confirm = "transConfirm", cancel = "transCancel")
	@Override
	public void doTrans(String orderId) {
		System.out.println("==============================================");
		System.out.println("============    远程 准备阶段                      ================");
		System.out.println("==============================================");
	}

	/**
	 * 事务提交
	 * 
	 * @return
	 */
	public void transConfirm(String orderId) {
		System.out.println("==============================================");
		System.out.println("============    远程 确认阶段                      ================");
		System.out.println("==============================================");
	}

	/**
	 * 事务取消
	 * 
	 * @return
	 */
	public void transCancel(String orderId) {
		System.out.println("==============================================");
		System.out.println("============    远程 取消阶段                      ================");
		System.out.println("==============================================");
	}
}